package com.sicheng.lc.杂题.二叉树;

import leetcode.editor.cn.tree.TreeNode;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/9/8 21:08
 */
public class 最小权值和 {
    /**
     * 给定一棵二叉树，二叉树的每个结点只有0或2个孩子。
     * 你需要对每个结点赋值一个正整数，使得每个结点的左右子树权值和相等。
     * 你需要返回所有结点的最小权值和对1e9+7取模的结果。
     * 二叉树结点个数不超过1e5。
     * input:
     * {0,0,0}
     * output:
     * 3
     */

    static int mod = (int) 1e9 + 7;
    int getTreeSum(TreeNode root) {
        if (root == null)
            return 0;
        int l = getTreeSum(root.left);
        int r = getTreeSum(root.right);
        return ((Math.max(l, r) << 1) + 1) % mod;
    }
}
